home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Enigma Amiga Life 109
/
EnigmaAmiga109CD.iso
/
dalla rivista
/
amiga.free
/
sorgenti vari
/
wolfedit2 2.0.4 source.sit
/
WolfEdit2 2.0.4 Source
/
ULevelInfo.p
< prev
next >
Wrap
Text File
|
1995-10-06
|
3KB
|
115 lines
unit ULevelInfo;
interface
uses
ULevel, UWolfDoc;
procedure IULevelInfo;
function EditLevelInfo (mapList: TMapListDoc; levelNum: integer): boolean;
implementation
uses
UDialog, UMusic;
const
levelInfoDlogID = 128;
badFloorNumAlrtID = 147;
altNextLevelMenuID = 141;
majorFloorItem = 3;
minorFloorItem = 4;
parMinItem = 5;
parSecItem = 6;
musicItem = 7;
altNextLevelItem = 8;
procedure IULevelInfo;
begin
end;
procedure SetUpAltNextLevelMenu (mapList: TMapListDoc);
var
i: integer;
m: MenuHandle;
begin
m := GetMenu(altNextLevelMenuID);
for i := CountMItems(m) downto 2 do
DelMenuItem(m, i);
for i := 1 to mapList.fNumLevels do
with mapList.fIndex^^[i].info^^.mapListEntry do
AppendMenu(m, StringOf('Floor ', majorFloor : 1, '-', minorFloor : 1));
end;
function EditLevelInfo (mapList: TMapListDoc; levelNum: integer): boolean;
var
h: LevelInfoHandle;
dlog: TDialog;
info: LevelInfoRecord;
item: integer;
procedure LoadLevelInfo;
var
i, min, max: integer;
begin
with dlog do begin
SetItemNum(majorFloorItem, info.mapListEntry.majorFloor);
SetItemNum(minorFloorItem, info.mapListEntry.minorFloor);
SetItemNum(parMinItem, info.mapListEntry.parTime div 60);
SetItemNum(parSecItem, info.mapListEntry.parTime mod 60);
SetItemValue(musicItem, SongIDToMenuItem(info.music, mapList.fMusic));
i := info.mapListEntry.altNextLevel + 2;
GetItemMinMax(altNextLevelItem, min, max);
if i > max then
i := 1;
SetItemValue(altNextLevelItem, i);
end;
end;
function UnloadLevelInfo: boolean;
var
n: longint;
procedure BadFloorNumber (itemNo: integer);
begin
DoAlert(badFloorNumAlrtID);
dlog.SelItemText(itemNo, 0, 32767);
UnloadLevelInfo := false;
exit(UnloadLevelInfo);
end;
begin {UnloadLevelInfo}
with dlog do begin
if not GetItemNumInRange(majorFloorItem, n, 0, 9) then
BadFloorNumber(majorFloorItem);
info.mapListEntry.majorFloor := n;
if not GetItemNumInRange(minorFloorItem, n, 0, 9) then
BadFloorNumber(minorFloorItem);
info.mapListEntry.minorFloor := n;
info.mapListEntry.parTime := GetItemNum(parMinItem) * 60 + GetItemNum(parSecItem);
info.music := MenuItemToSongID(GetItemValue(musicItem), mapList.fMusic);
info.mapListEntry.altNextLevel := GetItemValue(altNextLevelItem) - 2;
end;
UnloadLevelInfo := true;
end;
begin {EditLevelInfo}
h := mapList.fIndex^^[levelNum].info;
SetUpMusicMenu(mapList.fVersion.encounter, mapList.fMusic);
SetUpAltNextLevelMenu(mapList);
new(dlog);
dlog.IGetNewDialog(levelInfoDlogID);
dlog.SetTitle(StringOf('Level ', levelNum : 1, ' of ', mapList.fFileName));
info := h^^;
LoadLevelInfo;
dlog.Show;
repeat
item := dlog.DoModalDialog
until (item = cancel) | UnloadLevelInfo;
if item = ok then
h^^ := info;
dlog.Free;
EditLevelInfo := item = ok;
end;
end.